package com.carb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.carb.entity.Business;
import com.carb.enums.BusinessStatus;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 业务管理 Mapper 接口
 * </p>
 *
 * @author XuChaoyang
 * @since 2025-01-18
 */
public interface BusinessMapper extends BaseMapper<Business> {

    /**
     * 根据列表查询业务id集合
     * @param projectIdList 服务项目id集合
     * @param employeeIdList 员工id集合
     * @param memberIdList 会员id集合
     * @param carIdList 车辆id集合
     * @return 业务id集合
     */
    List<Long> getBusinessIdsByList(List<Long> projectIdList, List<Long> employeeIdList, List<Long> memberIdList, List<Long> carIdList);

    /**
     * 根据时间段和状态查询当日营业总额
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return 当日营业总额
     */
    Double getSumTurnover(LocalDateTime beginTime, LocalDateTime endTime);

    /**
     * 根据时间段、业务状态、付款状态查询指定业务数量
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @param businessStatus 业务状态
     * @return 指定业务数量
     */
    Integer getBusinessCount(LocalDateTime beginTime, LocalDateTime endTime, BusinessStatus businessStatus);

    /**
     * 根据业务ids得到id-rating的Map
     * @param businessIds 业务id集合
     * @return Map-List
     */
    List<Map<String, Object>> getRatingsByIds(List<Long> businessIds);
}
